home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2004 February
/
PCWorld_2004-02_cd.bin
/
software
/
vyzkuste
/
jaknavideo
/
jaknavideo.exe
/
zp320pro-trial.exe
/
DVDGraph
/
-- Sample Graph with Building Notes.dvdgraph
next >
Wrap
Text File
|
2002-12-29
|
6KB
|
112 lines
// This file is used for the manual construction of DVD FilterGraphs.
// This is a somewhat complex issue, you have been warned.
//
// The Functions:
//
// DefineFilter(FileName)
// - Using this function you can define which filters are used by the Graph and
// can later be registered/unregistered through the user interface.
// DO NOT specify paths, Zoom Player does a system-wide scan for these files.
//
// LoadFilter(FilterID,FilterName)
// - You can get the FilterID string by loading the filter in graph edit
// and saving the result to an XML file (File -> Save as XML). Make sure
// you copy it complete, along with the {} chars.
// The FilterName is a name you assign to the filter. I recommend using
// the name as it's listed by GraphEdit.
//
// ConnectPin(SourceFilterName,SourcePinName,DestinationFilterName,DestinationPinName)
// - The Source and Destination filter names are the names you used with the LoadFilter
// function. The Pin names can be found by viewing an XML exported filter graph
// using GraphEdit (note: the pin names as they appear within GraphEdit itself
// are incorrect!).
//
// IndirectConnectPin(SourceFilterName,SourcePinName,DestinationFilterName,DestinationPinName)
// - This function is similar to the ConnectPin function except that it allows you to
// connect pins with missing filters in between them. For example, you don't really know
// which Audio/Video Codec an AVI file uses, so ... By Indirectly connecting the AVI Splitter
// "Video->Out" pin with the Video Renderer filter "Video->In", the video codec is derived
// automatically.
//
// SetFilterSync(FilterName)
// - Using this function, you can set a specific filter as the filter that control the
// Audio/Video Synchronization. Not all filters can be set as the Sync filters. Usually
// the Audio filters are the ones in control of synchronization.
// Use this function as the last function in the graph.
//
// UseSystemClock
// - When used, a System Clock is created to maintain sync. This may cure some microstutter
// issues, but may lead to audio desync.
//
//
// Tips:
//
// 1. I recommend using the same filter names as listed on GraphEdit.
// 2. Make sure you don't have any typos when connecting the filters.
// 3. Make sure to load the filters before connecting the pins.
// 4. The order of connection can be important.
// 5. Having GraphEdit open while trying create a graph will cause it to fail!
// 6. Make sure that the Overlay Mixer filter is named "Overlay Mixer" or you'll
// have issues with getting Transparent OSD to work.
// 7. Same thing for the Video Renderer, make sure it's labeled as "Video Renderer".
// 8. Make your life easier by using the Conversion program I wrote to convert
// GraphEdit's exported XML files into a Zoom Player FilterGraph file. You can
// get it here: http://www.inmatrix.com/files/xml2zoom_download.shtml
//
//
// Sample "FilterID":
//
// {9BC1B780-85E3-11D2-98D0-0080C84E9C39} - Cyberlink Audio Decoder (PowerDVD)
//
// {9BC1B781-85E3-11D2-98D0-0080C84E9C39} - Cyberlink Video/SP Decoder (PowerDVD)
//
// {3D5455E5-D8E8-4B4C-84AF-4703C5542042} - Cyberlink Audio Effect
//
//
// This example shows you how to use the Cyberlink 4.0 filters to render
// a DVD graph. This setup should be the same as letting DirectShow render
// the graph itself. I built this graph by first setting it up in Graph Edit
// and then after making sure it works, I converted it to the example below.
//
// Here's an image of how this graph looks under GraphEdit:
// http://www.inmatrix.com/pictures/misc/cyberlink_graph.gif
//
# Define our filter files:
DefineFilter(clvsd.ax)
DefineFilter(claud.ax)
# Load all our filters into the Graph
LoadFilter({70E102B0-5556-11CE-97C0-00AA0055595A},Video Renderer)
LoadFilter({79376820-07D0-11CF-A24D-0020AFD79767},Default DirectSound Device)
LoadFilter({CD8743A1-3736-11D0-9E69-00C04FD7C15B},Overlay Mixer)
LoadFilter({9BC1B780-85E3-11D2-98D0-0080C84E9C39},Cyberlink Audio Decoder)
LoadFilter({6E8D4A20-310C-11D0-B79A-00AA003767A7},Line21 Decoder)
LoadFilter({9BC1B781-85E3-11D2-98D0-0080C84E9C39},Cyberlink Video/SP Decoder)
LoadFilter({9B8C4620-2C1A-11D0-8493-00A02438AD48},DVD Navigator)
# Connect the DVD Navigator Video-Out Pin to the Cyberlink Video decoder Video-In pin.
ConnectPin(DVD Navigator,Video,Cyberlink Video/SP Decoder,Video In)
# Connect the DVD Navigator AC3-Out pin (audio) to the Cyberlink Audio decoder Audio-in pin.
ConnectPin(DVD Navigator,AC3,Cyberlink Audio Decoder,In)
# Connect the DVD Navigator SubPicture-Out pin (subtitles) to the Cyberlink Video SubPicture-In pin.
ConnectPin(DVD Navigator,SubPicture,Cyberlink Video/SP Decoder,SubPicture In)
# Connect the Cyberlink Audio decoder Audio-Out pin to the Default DirectSound Device Audio Renderer
ConnectPin(Cyberlink Audio Decoder,Out,Default DirectSound Device,Audio Input pin (rendered))
# Connect the Cyberlink Video decoder to the Overlay Mixer
ConnectPin(Cyberlink Video/SP Decoder,Video Out,Overlay Mixer,Input0)
# Connect the Cyberlink Video decoder to the Line21 decoder (closed captions)
ConnectPin(Cyberlink Video/SP Decoder,~Closed Caption Out,Line21 Decoder,In)
# Connect the Line21 decoder to the Overlay Mixer
ConnectPin(Line21 Decoder,Out,Overlay Mixer,Input2)
# Connect the Overlay Mixer to the video renderer
ConnectPin(Overlay Mixer,Output,Video Renderer,In)